import axios from "axios";

let apiurl = "";
let config = null;
// 创建axios实例，可以在这里配置基础URL、超时等
const instance = axios.create({
  // baseURL: process.env.VUE_APP_API_BASE_URL || '', // 你的API基础URL
  // 接口地址
  baseURL: getbaseurl(),
  // 接口拼接地址
  // pre: urlPrefix,
  timeout: 500000, // 请求超时时间
});
// console.log(globSetting.apiUrl + globSetting.urlPrefix);
// 请求拦截器，可以在请求发送前做一些处理，比如添加token
instance.interceptors.request.use(
  (config) => {
    // 在这里可以添加请求头、处理认证等
    // 例如:
    // if (store.getters.token) {
    //   config.headers.Authorization = `Bearer ${store.getters.token}`;
    // }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截器，处理响应数据，例如错误统一处理
instance.interceptors.response.use(
  (response) => {
    // 对响应数据做些处理
    return response.data;
  },
  (error) => {
    // 处理响应错误，例如根据错误码提示用户
    // console.error('Axios error:', error);
    return Promise.reject(error);
  }
);

// 封装GET请求
export function get(url: string, params: any) {
  return instance.get(url, { params });
}

// 封装POST请求
export function posturl(url: string) {
  return instance.post(url);
}
// 封装POST请求
export function post(url: string, data: any) {
  return instance.post(url, data);
}
// 封装POST请求
export function upload(url: string, data: any, config: any) {
  return instance.post(url, data, config);
}
//返回基础路径 http://127.0.0.1:8848/api  http://syf8848.fun  http://syf8848.free.idcfengye.com
export function getbaseurl() {
  return geturl() + "/api";
}
//返回基础路径 http://127.0.0.1:8848/api  http://syf8848.fun  http://syf8848.free.idcfengye.com
export function geturl() {
  if (apiurl && apiurl.length > 0) {
    return apiurl;
  } else {
    getConfigAsync();
    return apiurl;
  }
}

// 异步获取配置
export async function getConfigAsync() {
  try {
    const response = await axios.get('/config.js', {
      responseType: 'json' // 设置响应类型为 JSON
    });
    instance.defaults.baseURL = response.data + "/api";
    apiurl = response.data;
  } catch (error) {
    console.error('Failed to fetch config:', error);
    throw error;
  }
}

//返回实例
export function getinstance() {
  return instance;
}

// 根据需要还可以添加PUT, DELETE等方法
